Initial Weights |
A simple way to initialize the weights of an artificial network layer is to randomly generate values in a very specific range. However, to reduce training time, it is convenient to properly set the initial weights using a more robust method. There are some basic principles that must be taken into consideration to generate a good set of initial weights. However, the most important principle for weight selection is that the input value for the activation function be centered around zero. In the figure below, this implies that the values of y1, y2, p1, p2, p3 and p4 have a mean value of zero. Additionally, these variables should have a value from -3.0 to 3.0 for most of the cases, and thus, avoid the neurons saturation. Un método simple para inicializar los pesos de la capa de una red neuronal es generar valores en forma aleatoria en un rango específico. Sin embargo, para reducir el tiempo de entrenamiento, es conveniente fijar loa valores iniciales de los pesos usando un método más robusto. Hay algunos principios básicos que deben tomarse en cuenta para generar un buen conjunto de pesos iniciales. Sin embargo, el principio más importante para seleccionar pesos es que el valor de entrada a la función de activación este centrado alrededor de cero. En la figura de abajo, esto implica que los valores de y1, y2, p1, p2, p3 and p4 tengan una valor medio de cero. Adicionalmente, estas variables deberían de tener un valor desde -3.0 a 3.0 para la mayoría de los casos, y así, evitar la saturación de la neuronas. |
Bias Weights |
The figure below shows some simple formulas to estimate the bias weights using on the expected value (the mean) of the inputs and the weights of the RBM. La figura de abajo muestra algunas fórmulas simples para estimar los pesos bias usando los valores esperados (la media) de las entradas y los pesos de la RBM. |
Problem 1 |
Three students, Henry, Mary and Jim are writing a program in C++ to initialize the weights of the visible units of a Restricted Boltzmann Machine. Each student is proposing one of the codes shown below. Which student is proposing a more robust algorithm? Justify your answer. Tres estudiantes, Enrique, María y Jaime están escribiendo un programa en C++ para inicializar los pesos de las unidades visibles una Máquina Restringida de Boltzmann. Cada estudiante está proponiendo uno de los códigos mostrados debajo. Cual estudiante está proponiendo un algoritmo más robusto? Justifique su respuesta. |
Henry.cpp |
const int count = 10; double weight[count ]; const double k = 0.1/RAND_MAX; for (int i = 0; i < count ; i++) { weight[i] = k*rand(); } |
Mary.cpp |
const int count = 10; double weight[count]; const double k = 1.0/RAND_MAX; for (int i = 0; i < count; i++) { weight[i] = k*rand(); } |
Jim.cpp |
const int count = 10; double weight[count]; const double k = 1.0/(sqrt(count)*RAND_MAX); for (int i = 0; i < count; i++) { weight[i] = k*rand(); } |
Problem 2 |
Use Microsoft Excel to compute the bias weights of the RBM shown below. Name the file BiasComputation.xlxs. Suppose that the neurons are using the logsig function. Use Microsoft Excel para calcular los pesos de polarización de la RBM que se muestra debajo. Llame al archivo BiasComputation.xlsx. Suponga que las neuronas están usando la función logsig. |
Problem 3 |
Download a research paper about a method to initialize the weights in a deep learning neural network. Write a 300 words summary to describe the method and the obtained results. Do not forget to include the title of the paper, the names of the authors, the journal name and the year of publication. Descargue un artículo de investigación sobre un método para inicializar los pesos en una red de aprendizaje profundo. Escriba un resumen de 300 palabras para describir el método y los resultados obtenidos. No se olvide de incluir el título del artículo, los nombres de los autores, el nombre de la revista y el año de publicación. |